﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using ExamSharedClasses;

namespace ExamClient {

    /// <summary>
    /// Stellt Methoden für den Client bereit.
    /// </summary>
    public class ClientMethods {

        /// <summary>
        /// Überprüfung der Eingaben bei der Anmeldung
        /// </summary>
        /// <param name="email">Email</param>
        /// <param name="password">Kennwort</param>
        /// <returns></returns>
        public static string IsUserInputValid(string email, string password) {
            string text = "";
            Regex emailRegex = new Regex(@"^(([^<>()[\]\\.,;:\s@\""]+" 
                + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@" 
                + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" 
                + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+" 
                + @"[a-zA-Z]{2,}))$");

            if ( email.Equals( "" ) & password.Equals( "" ) )
                text = "Bitte die E-Mail-Adresse und\n das Passwort angeben!";
            else if ( email.Equals( "" ) )
                text = "Bitte die E-Mail-Adresse angeben!";
            else if ( password.Equals( "" ) )
                text = "Bitte das Passwort angeben!";
            else if (!emailRegex.IsMatch(email))
                text = "Bitte die E-Mail-Adresse überprüfen!";

            return text;
        }

        /// <summary>
        /// Prozedur der Abmeldung des Clients vom Server
        /// </summary>
        public static void ClientLogout()
        {
            App.ServerConnection.Logout();
            App.Session = new Session();
            App.Password = new Password();
            App.UserAddress = new UserAddress();
            App.ServerConnection = null;
            App.MainWindow.menuBarFrame.Content = new MenuBarPage();
            App.MainWindow.center.Content = new WelcomePage();
            App.MainWindow.header.Content = new LoginBar();
            App.MainWindow.Title = "Kla Client";
            App.MainWindow.SetStatusBarMessage("Abmeldung erfolgreich.");
        }

        /// <summary>
        /// (De-)Aktiviert die Interaktionsmöglichkeiten der LoginBar und MenuBar
        /// beim Schreiben einer Klausur
        /// </summary>
        /// <param name="activate">Das Examen wird (nicht) geschrieben</param>
        public static void ExamMode(Boolean activate)
        {
            App.LoginBar.ExamMode(activate);
            App.MenuBar.ExamMode(activate);
        }

    }
}
